"""
复杂任务演示

这个示例展示了 Agent 如何处理复杂的多步骤任务：
1. 任务分解
2. 计划制定
3. 步骤执行
4. 结果整合
"""

import asyncio
import sys
from pathlib import Path

# 添加项目根目录到路径
sys.path.insert(0, str(Path(__file__).parent.parent))

from agent.core import Agent, AgentConfig
from rich.console import Console


async def complex_task_demo():
    """复杂任务演示"""
    console = Console()
    
    console.print("🎯 复杂任务演示\n", style="bold cyan")
    
    # 创建 Agent
    config = AgentConfig(
        name="TaskAgent",
        verbose=True,
        enable_planning=True,
        enable_memory=True
    )
    agent = Agent(config)
    
    # 复杂任务示例
    complex_tasks = [
        "帮我创建一个学习计划：我想在3个月内学会Python编程，每天可以学习2小时",
        "分析一下开发AI Agent需要哪些技术栈，并给出学习路径",
        "设计一个简单的博客网站架构，包括前端、后端和数据库",
        "制定一个数据科学项目的实施方案，从数据收集到模型部署"
    ]
    
    for i, task in enumerate(complex_tasks, 1):
        console.print(f"\n{'='*60}", style="cyan")
        console.print(f"复杂任务 {i}: {task}", style="bold blue")
        console.print(f"{'='*60}", style="cyan")
        
        response = await agent.process_input(task)
        console.print(f"\n任务结果:\n{response}", style="green")
        
        # 如果启用了任务规划，显示规划详情
        if agent.task_planner and agent.task_planner.current_plan_id:
            plan_status = agent.task_planner.get_plan_status()
            console.print(f"\n📋 任务规划状态:", style="yellow")
            console.print(f"- 总任务数: {plan_status['total_tasks']}")
            console.print(f"- 整体进度: {plan_status['overall_progress']:.1%}")
            console.print(f"- 状态分布: {plan_status['status_breakdown']}")
        
        # 显示记忆状态
        if agent.memory_system:
            memory_stats = agent.memory_system.get_statistics()
            console.print(f"\n🧠 记忆状态:", style="yellow")
            console.print(f"- 记忆条目: {memory_stats['total_entries']}")
            console.print(f"- 平均重要性: {memory_stats.get('average_importance', 0):.1f}")
        
        # 等待继续
        if i < len(complex_tasks):
            input("\n按 Enter 继续下一个任务...")
    
    console.print("\n✅ 复杂任务演示完成", style="bold green")


if __name__ == "__main__":
    asyncio.run(complex_task_demo())